//package cn.qzsoft.collect.server.modules.ludong.Socket;
//
//import cn.qzsoft.collect.server.common.utils.MapToBeanUtils;
//import cn.qzsoft.collect.server.modules.ludong.Dto.ResultDto;
//import cn.qzsoft.collect.server.modules.ludong.asphalt.entity.AsphaltConcreteCollectionEntity;
//import cn.qzsoft.collect.server.modules.ludong.asphaltzhjd.service.AsphaltDataService;
//import cn.qzsoft.collect.server.modules.ludong.cement.entity.CementStabilizedMacadamCollectionEntity;
//import cn.qzsoft.collect.server.modules.ludong.cement.service.WaterTransitionDataService;
//import cn.qzsoft.collect.server.modules.ludong.contaminant.entity.ContaminantMonitorDetailEntity;
//import cn.qzsoft.collect.server.modules.ludong.contaminant.entity.ContaminantMonitorEntity;
//import cn.qzsoft.collect.server.modules.ludong.contaminant.service.EnvWarningFlagService;
//import cn.qzsoft.collect.server.modules.ludong.exp.entity.StressMachineEntity;
//import cn.qzsoft.collect.server.modules.ludong.exp.service.StressMachineService;
//import cn.qzsoft.collect.server.modules.ludong.weigh.entity.WeighBridgeEntity;
//import cn.qzsoft.collect.server.modules.ludong.weigh.service.WeighBridgeService;
//import com.alibaba.fastjson.JSON;
//import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
//import com.google.gson.Gson;
//import com.google.gson.reflect.TypeToken;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.context.ApplicationContext;
//
//import java.io.BufferedWriter;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStreamWriter;
//import java.math.BigDecimal;
//import java.net.Socket;
//import java.net.SocketException;
//import java.net.SocketTimeoutException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//public class ServerConfig extends Thread {
//    private Socket socket;
//
//    public ServerConfig(Socket socket) {
//        this.socket = socket;
//    }
//
//    private String handle(InputStream inputStream) throws IOException {
//        byte[] bytes = new byte[1024];
//        int len = inputStream.read(bytes);
//        if (len != -1) {
//            StringBuffer request = new StringBuffer();
//            request.append(new String(bytes, 0, len, "GBK"));
//            try {
//                if (null != request) {
//                    String messages = request.toString().replaceAll("null", "");
//
//                    Map maps = (Map) JSON.parse(messages);
//                    //判断是否是心跳包
//                    if (null != maps.get("type") && "xintiao".equals(maps.get("type").toString())) {
//                        ResultDto dto = new ResultDto();
//                        dto.setBianhao(maps.get("shebei").toString());
//                        dto.setResult(-3);
//                        dto.setMessage("心跳包发送成功");
//                        return (JSON.toJSONString(dto));
//                    }
//                    //沥青
//                    if (null != maps.get("sha1_shijizhi")) {
//                        return this.insertAsphalt(maps);
//                    }
//                    if (null != maps.get("料1产量")) {
//                        //水稳
//                       return this.insertCement(maps);
//                    }
//                    if (null != maps.get("tare_weight")) {
//                        //地磅
//                       return this.insertWeightBridge(maps);
//                    }
//                    if (null != maps.get("STRID")) {
//                        //压力机主表
//                        return this.insertStress(maps);
//                    }
//                    if (null != maps.get("RUPTURESTRENGTH")) {
//                        //压力机子表
//                        return this.updateStress(maps);
//                    }
//                    if (null !=maps.get("data_detail")){
//                        return this.insertEnv(maps);
//                    }
//                }
//            }catch (Exception e) {
//
//            }
//            //处理数据
//
//        }
//        return "数据错误";
//    }
//
//    @Override
//    public void run() {
//        BufferedWriter writer = null;
//        try {
//            // 设置连接超时9秒
//            socket.setSoTimeout(9000);
//            System.out.println("客户 - " + socket.getRemoteSocketAddress() + " -> 机连接成功");
//            InputStream inputStream = socket.getInputStream();
//            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//            String result = null;
//            try {
//                result = handle(inputStream);
//                writer.write(result);
//                writer.newLine();
//                writer.flush();
//            } catch (IOException | IllegalArgumentException e) {
//                writer.write("error");
//                writer.newLine();
//                writer.flush();
//                System.out.println("发生异常");
//                try {
//                    System.out.println("再次接受!");
//                    result = handle(inputStream);
//                    writer.write(result);
//                    writer.newLine();
//                    writer.flush();
//                } catch (SocketTimeoutException ex) {
//                    System.out.println("再次接受, 发生异常,连接关闭");
//                }
//            }
//        } catch (SocketException socketException) {
//            socketException.printStackTrace();
//            try {
//                writer.close();
//            } catch (IOException ioException) {
//                ioException.printStackTrace();
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                writer.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }
//
//    //压力机子表
//    private String updateStress(Map map) {
//        try {
//            ApplicationContext act = ApplicationContextRegister.getApplicationContext();
//            StressMachineService bean = act.getBean(StressMachineService.class);
//            StressMachineEntity entity = ((StressMachineService) bean).getById(map.get("SYJID").toString());
//            entity.setProcessStress(map.get("RATEVALUE").toString());
//            entity.setCompressiveStrength(map.get("RUPTURESTRENGTH").toString());
//            entity.setGraphId(map.get("TESTMAPID").toString());
//            entity.setCubeCode(map.get("SPECIMENNO").toString());
//            bean.updateById(entity);
//            ResultDto dto = new ResultDto();
//            dto.setBianhao("testmap1");
//            dto.setResult(1);
//            dto.setMessage("压力机数据添加成功");
//            return JSON.toJSONString(dto);
//        }catch (Exception e ) {
//            ResultDto dto = new ResultDto();
//            dto.setBianhao("testmap1");
//            dto.setResult(-1);
//            dto.setMessage("压力机数据添加失败");
//            return JSON.toJSONString(dto);
//        }
//    }
//
//    //压力机主表
//    private String insertStress(Map map){
//        try {
//            StressMachineEntity entity = new StressMachineEntity();
//            entity.setId(map.get("SYJID").toString());
//            entity.setTestType(map.get("type").toString());
//            entity.setProjectName(map.get("PROJECTNAME").toString());
//            entity.setCubeArea(map.get("AREA").toString());
//            entity.setCubeCode(map.get("SPECIMENNO").toString());
//            entity.setDesignStrength(map.get("DESIGNSTRENGTH").toString());
//            entity.setTestType(map.get("TESTTYPE").toString());
//            entity.setConstructionSpot(map.get("CONSTRUCTIONSITE").toString());
//            entity.setTestId(map.get("TESTNUM").toString());
//            ApplicationContext act = ApplicationContextRegister.getApplicationContext();
//            StressMachineService bean = act.getBean(StressMachineService.class);
//            ((StressMachineService) bean).insertAndRemoveData(entity);
//            ResultDto dto = new ResultDto();
//            dto.setBianhao("strengthdata1");
//            dto.setResult(1);
//            dto.setMessage("压力机数据添加成功");
//            return JSON.toJSONString(dto);
//        }catch (Exception e) {
//            ResultDto dto = new ResultDto();
//            dto.setBianhao("strengthdata1");
//            dto.setResult(-1);
//            dto.setMessage("压力机数据添加失败");
//            return JSON.toJSONString(dto);
//        }
//
//
//    }
//    //地磅
//    private String insertWeightBridge(Map map) {
//        try {
//            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss");
//            WeighBridgeEntity entity = new WeighBridgeEntity();
//            entity.setWeightType(map.get("type").toString());
//            entity.setEquipmentNumber(map.get("shebeibianhao").toString());
//            entity.setInsertTime(format.parse(map.get("baocunshijian").toString()));
//            entity.setExitTime(format.parse(map.get("exit_time").toString()));
//            entity.setEntryTime(format.parse(map.get("entry_time").toString()));
//            entity.setCarNumber(map.get("car_number").toString());
//            entity.setActualWeight(stringToBigDecimal(map.get("actual_weight").toString()));
//            entity.setCountingWeight(stringToBigDecimal(map.get("counting_weight").toString()));
//            entity.setDeduction(stringToBigDecimal(map.get("deduction").toString()));
//            entity.setNetWeight(stringToBigDecimal(map.get("net_weight").toString()));
//            entity.setTareWeight(stringToBigDecimal(map.get("tare_weight").toString()));
//            entity.setGrossWeight(stringToBigDecimal(map.get("gross_weight").toString()));
//            entity.setReceivingPlace(map.get("receiving_place").toString());
//            entity.setSendingPlace(map.get("sending_place").toString());
//            entity.setProductionDate(format.parse(map.get("production_date").toString()));
//            entity.setMaterialBatch(map.get("material_batch").toString());
//            entity.setMaterialSpec(map.get("material_spec").toString());
//            entity.setMaterialType(map.get("material_type").toString());
//            entity.setMaterialVendor(map.get("material_vendor").toString());
//            entity.setMaterialBrand(map.get("material_brand").toString());
//            entity.setTaskNo(map.get("bianhao").toString());
//            ApplicationContext act = ApplicationContextRegister.getApplicationContext();
//            WeighBridgeService bean = act.getBean(WeighBridgeService.class);
//            ((WeighBridgeService) bean).insertAndRemoveData(entity);
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(map.get("bianhao").toString());
//            dto.setResult(1);
//            dto.setMessage("地磅数据添加成功");
//            return (JSON.toJSONString(dto));
//        }catch (Exception e) {
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(map.get("bianhao").toString());
//            dto.setResult(-1);
//            dto.setMessage("地磅数据添加失败");
//            return (JSON.toJSONString(dto));
//        }
//
//    }
//
//    //沥青
//    private String  insertAsphalt(Map map){
//        try {
//            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss");
//            AsphaltConcreteCollectionEntity platformLaboratoryDataEntity = new AsphaltConcreteCollectionEntity();
//            platformLaboratoryDataEntity.setEquipmentNumber(map.get("shebeibianhao").toString());
//            platformLaboratoryDataEntity.setAsphaltTemp(map.get("asphalt_temperature").toString());
//            platformLaboratoryDataEntity.setSluiceTemp(map.get("liucaowendu").toString());
//            platformLaboratoryDataEntity.setTemperature(map.get("wendu").toString());
//            platformLaboratoryDataEntity.setMixingDuration(map.get("jiaobanshijian").toString());
//            platformLaboratoryDataEntity.setProportionIdGet(map.get("peifanghao").toString());
//            platformLaboratoryDataEntity.setDataNumber(map.get("bianhao").toString());
//            platformLaboratoryDataEntity.setDischargingTime(simpleDateFormat.parse(map.get("chuliaoshijian").toString()));
//            platformLaboratoryDataEntity.setProjectName(map.get("gongchengmingcheng").toString());
//            platformLaboratoryDataEntity.setConstructionSite(map.get("sigongdidian").toString());
//            platformLaboratoryDataEntity.setInsertDate(simpleDateFormat.parse(map.get("baocunshijian").toString()));
//            //骨料1 实际
//            platformLaboratoryDataEntity.setSand1Act(stringToBigDecimal(map.get("shi1_shijizhi").toString()));
//            platformLaboratoryDataEntity.setSand2Act(stringToBigDecimal(map.get("shi2_shijizhi").toString()));
//            platformLaboratoryDataEntity.setGravel1Act(stringToBigDecimal(map.get("guliao5_shijizhi").toString()));
//            platformLaboratoryDataEntity.setGravel2Act(stringToBigDecimal(map.get("sha1_shijizhi").toString()));
//            platformLaboratoryDataEntity.setGravel3Act(stringToBigDecimal(map.get("shuini1_shijizhi").toString()));
//            platformLaboratoryDataEntity.setGravel4Act(stringToBigDecimal(map.get("shuini2_shijizhi").toString()));
//            platformLaboratoryDataEntity.setSlagPowderAct(stringToBigDecimal(map.get("fenliao5_shijizhi").toString()));
//            platformLaboratoryDataEntity.setAsphaltAct(stringToBigDecimal(map.get("waijiaji3_shijizhi").toString()));
//            //骨料理论
//            platformLaboratoryDataEntity.setSand1Theo(stringToBigDecimal(map.get("shi1_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setSand2Theo(stringToBigDecimal(map.get("shi2_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setGravel1Theo(stringToBigDecimal(map.get("guliao5_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setGravel2Theo(stringToBigDecimal(map.get("sha1_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setGravel3Theo(stringToBigDecimal(map.get("shuini1_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setGravel4Theo(stringToBigDecimal(map.get("shuini2_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setSlagPowderTheo(stringToBigDecimal(map.get("fenliao5_lilunzhi").toString()));
//            platformLaboratoryDataEntity.setAsphaltTheo(stringToBigDecimal(map.get("waijiaji3_shijizhi").toString()));
//            ApplicationContext act = ApplicationContextRegister.getApplicationContext();
//            AsphaltDataService bean = act.getBean(AsphaltDataService.class);
//            ((AsphaltDataService) bean).insert(platformLaboratoryDataEntity);
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(map.get("bianhao").toString());
//            dto.setResult(1);
//            dto.setMessage("沥青数据添加成功");
//            return JSON.toJSONString(dto);
//        }catch (Exception e) {
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(map.get("bianhao").toString());
//            dto.setResult(-1);
//            dto.setMessage("沥青数据添加失败");
//            return JSON.toJSONString(dto);
//        }
//
//    }
//    //水稳
//    private String insertCement(Map maps) {
//        try {
//            CementStabilizedMacadamCollectionEntity entity = new CementStabilizedMacadamCollectionEntity();
//            entity.setEquipmentNumber(maps.get("shebeibianhao").toString());
//            entity.setProportionIdGet(maps.get("配方号").toString());
//            entity.setBatchWeight(maps.get("总累计").toString());
//            entity.setMaterialFlow1(maps.get("料1流量").toString());
//            entity.setMaterialFlow2(maps.get("料2流量").toString());
//            entity.setMaterialFlow3(maps.get("料3流量").toString());
//            entity.setMaterialFlow4(maps.get("料4流量").toString());
//            entity.setMaterialFlow5(maps.get("料5流量").toString());
//            entity.setMaterialFlow6(maps.get("料6流量").toString());
//            entity.setMaterialFlow7(maps.get("料7流量").toString());
//            entity.setMaterialFlow8(maps.get("料8流量").toString());
//            entity.setMaterialFlow9(maps.get("料9流量").toString());
//            entity.setMaterialGiven1(maps.get("料1给定").toString());
//            entity.setMaterialGiven2(maps.get("料2给定").toString());
//            entity.setMaterialGiven3(maps.get("料3给定").toString());
//            entity.setMaterialGiven4(maps.get("料4给定").toString());
//            entity.setMaterialGiven5(maps.get("料5给定").toString());
//            entity.setMaterialGiven6(maps.get("料6给定").toString());
//            entity.setMaterialGiven7(maps.get("料7给定").toString());
//            entity.setMaterialGiven8(maps.get("料8给定").toString());
//            entity.setMaterialGiven9(maps.get("料9给定").toString());
//            entity.setMaterialYield1(maps.get("料1产量").toString());
//            entity.setMaterialYield2(maps.get("料2产量").toString());
//            entity.setMaterialYield3(maps.get("料3产量").toString());
//            entity.setMaterialYield4(maps.get("料4产量").toString());
//            entity.setMaterialYield5(maps.get("料5产量").toString());
//            entity.setMaterialYield6(maps.get("料6产量").toString());
//            entity.setMaterialYield7(maps.get("料7产量").toString());
//            entity.setMaterialYield8(maps.get("料8产量").toString());
//            entity.setMaterialYield9(maps.get("料9产量").toString());
//            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss");
//            entity.setGatheringTime(simpleDateFormat.parse(maps.get("caijishijian").toString()));
//            ApplicationContext act = ApplicationContextRegister.getApplicationContext();
//            WaterTransitionDataService bean = act.getBean(WaterTransitionDataService.class);
//            ((WaterTransitionDataService) bean).transitionData(entity);
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(maps.get("bianhao").toString());
//            dto.setResult(1);
//            dto.setMessage("水稳数据添加成功");
//            return JSON.toJSONString(dto);
//        }catch (Exception e) {
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(maps.get("bianhao").toString());
//            dto.setResult(-1);
//            dto.setMessage("水稳数据添加失败");
//            return JSON.toJSONString(dto);
//        }
//
//    }
//    //环保
//    public String insertEnv(Map maps) {
//        try {
//          //监控详细数据
//            Gson gson = new Gson();
//            List<Map<String, Object>> dataDetail = gson.fromJson(maps.get("data_detail").toString(), new TypeToken<List<Map<String, Object>>>() {
//            }.getType());
//            maps.remove("data_detail");
//            Map<String, Object> map = MapToBeanUtils.toReplaceKeyLow(maps);
//            ContaminantMonitorEntity contaminantMonitorEntity = MapToBeanUtils.mapToObject(map, ContaminantMonitorEntity.class);
//            if (StringUtils.isNotBlank(contaminantMonitorEntity.getId())) {
//                List<ContaminantMonitorDetailEntity> listDetail = new ArrayList<>();
//                for (Map<String, Object> entity : dataDetail) {
//                    entity = MapToBeanUtils.toReplaceKeyLow(entity);
//                    ContaminantMonitorDetailEntity detailEntity = MapToBeanUtils.mapToObject(entity, ContaminantMonitorDetailEntity.class);
//                    listDetail.add(detailEntity);
//                }
//                ApplicationContext act = ApplicationContextRegister.getApplicationContext();
//                EnvWarningFlagService bean = act.getBean(EnvWarningFlagService.class);
//                ((EnvWarningFlagService) bean).dataCollection(contaminantMonitorEntity,listDetail);
//
//            }
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(maps.get("bianhao").toString());
//            dto.setResult(1);
//            dto.setMessage("环保数据添加成功");
//            return JSON.toJSONString(dto);
//
//        }catch (Exception e) {
//            ResultDto dto = new ResultDto();
//            dto.setBianhao(maps.get("bianhao").toString());
//            dto.setResult(-1);
//            dto.setMessage("水稳数据添加失败");
//            return JSON.toJSONString(dto);
//        }
//
//    }
//
//    public BigDecimal stringToBigDecimal(String sum) {
//        if (ObjectUtils.isNotEmpty(sum)) {
//            return new BigDecimal(sum);
//        }
//        return new BigDecimal("0");
//    }
//
//}
